package cdu.sl.service;

import cdu.sl.domain.dto.LoginByVerCodeFormDTO;
import cdu.sl.domain.dto.LoginFormDTO;
import cdu.sl.domain.dto.RegisterFormDTO;
import cdu.sl.domain.dto.UserUpdateDTO;
import cdu.sl.domain.po.User;
import cdu.sl.domain.vo.LoginVO;
import cdu.sl.domain.vo.UserInfoVO;
import com.baomidou.mybatisplus.extension.service.IService;

import javax.servlet.http.HttpServletRequest;

public interface UserService extends IService<User> {

    /**
     * 用户注册
     * @param registerFormDTO 注册表单实体
     */
    void register(RegisterFormDTO registerFormDTO);

    /**
     * 用户登录
     * @param loginFormDTO 登录表单实体
     * @return 登录响应信息
     */
    LoginVO login(LoginFormDTO loginFormDTO);

    /**
     * 用户获取验证码
     * @param emailAddress 邮箱地址
     * @return
     */
    String sendVerificationCode(String emailAddress);


    /**
     * 用户使用验证码登录
     * @param loginByVerCodeFormDTO
     * @return
     */
    LoginVO loginByVerCode(LoginByVerCodeFormDTO loginByVerCodeFormDTO);
    

    /**
     * 获取当前用户信息（从token解析）
     * @return 当前用户信息
     */
    UserInfoVO getCurrentUserInfo();
    
    /**
     * 修改用户信息
     * @param userUpdateDTO 用户更新信息
     * @return 更新后的用户信息
     */
    UserInfoVO updateUser(UserUpdateDTO userUpdateDTO);
    
}
